package Web;


import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;

/**
 * 1. 创建 HttpClient：同样使用HttpClient.newHttpClient()创建HttpClient实例。
 * 2. 构建 HttpRequest：先准备好要发送的请求体数据（这里假设是 JSON 格式字符串），然后通过HttpRequest.newBuilder()进行链式调用，指定请求的 URI（需替换为实际的 POST 请求 URL），设置请求方法为POST，并使用BodyPublishers.ofString(requestBody)将请求体数据设置到请求中，同时设置Content-Type请求头为application/json（根据实际请求体格式设置），最后调用build()构建请求对象。
 * 3. 发送请求并处理响应：和 GET 请求类似，使用client.send(request, HttpResponse.BodyHandlers.ofString())发送请求并处理响应，获取并打印响应的相关信息。
 *
 * */



public class HttpPostDemo {
    public static void main(String[] args) {
        // 创建HttpClient实例
        HttpClient client = HttpClient.newHttpClient();
        try {
            // 构建POST请求的数据，这里假设是JSON格式的字符串，实际可根据需求修改
            String requestBody = "{\"key\":\"value\"}";
            // 创建HttpRequest，指定请求的URI、请求方法（POST）以及请求体
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://www.example.com/api/endpoint"))  // 替换为实际的POST请求URL
                    .POST(BodyPublishers.ofString(requestBody))
                    .header("Content-Type", "application/json")  // 设置请求头的Content-Type
                    .build();
            // 发送请求并获取响应，同样使用BodyHandlers.ofString()将响应体以字符串形式处理
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            // 打印响应状态码
            System.out.println("响应状态码: " + response.statusCode());
            // 打印响应头
            System.out.println("响应头: " + response.headers());
            // 打印响应体
            System.out.println("响应体: " + response.body());
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}